package com.example.kaogong.sys.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.kaogong.common.utils.RespBean;
import com.example.kaogong.sys.pojo.Course;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.kaogong.sys.pojo.dto.CourseAddDto;
import com.example.kaogong.sys.pojo.vo.CourseDetailInfoVo;
import com.example.kaogong.sys.pojo.vo.CourseInfoVo;

/**
 * <p>
 * 课程 服务类
 * </p>
 *
 * @author    
 * @since 2022-03-26
 */
public interface ICourseService extends IService<Course> {

    /**
     * 当前登录教师新增课程
     * @param name
     * @param courseAddDto
     * @return
     */
    RespBean addCourse(String name, CourseAddDto courseAddDto);

    /**
     * 根据课程编号删除课程
     * @param courseId
     * @return
     */
    RespBean deleteCourseByCourseId(Integer courseId);

    /**
     * 根据课程编号修改课程缩略图
     * @param courseId
     * @param fileName
     * @return
     */
    RespBean updateCourseImg(Integer courseId, String fileName);

    /**
     * 根据课程编号修改课程基本信息
     * @param course
     * @param courseId
     * @return
     */
    RespBean updateCourseInfo(Course course, Integer courseId);

    /**
     * 根据课程编号获取课程详细信息
     * @param courseId
     * @return
     */
    RespBean<CourseDetailInfoVo> getCourseDetailInfoByCourseId(Integer courseId);

    RespBean<Page<CourseInfoVo>> getCourseInfo(Long current, Long size, String name);

    /**
     * 当前登录学生收藏课程
     * @param courseId
     * @param name
     * @return
     */
    RespBean favoriteCourse(Integer courseId, String name);

    /**
     * 根据课程编号查询课程基本信息
     * @param courseId
     * @return
     */
    RespBean<CourseInfoVo> getCourseInfoById(Integer courseId);
}
